home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-05-19 | 50.9 KB | 2,035 lines |
- #define EXTERN extern
- #include "texd.h"
-
- zpostlinebreak ( finalwidowpenalty )
- integer finalwidowpenalty ;
- {/* 30 31 */ postlinebreak_regmem
- halfword q, r, s ;
- boolean discbreak ;
- scaled curwidth ;
- scaled curindent ;
- quarterword t ;
- integer pen ;
- halfword curline ;
- q = mem [ bestbet + 1 ] .hh .v.RH ;
- curp = 0 ;
- do {
- r = q ;
- q = mem [ q + 1 ] .hh .v.LH ;
- mem [ r + 1 ] .hh .v.LH = curp ;
- curp = r ;
- } while ( ! ( q == 0 ) ) ;
- curline = curlist .pgfield + 1 ;
- do {
- q = mem [ curp + 1 ] .hh .v.RH ;
- discbreak = false ;
- if ( q != 0 )
- if ( mem [ q ] .hh.b0 == 10 )
- {
- deleteglueref ( mem [ q + 1 ] .hh .v.LH ) ;
- mem [ q + 1 ] .hh .v.LH = eqtb [ 3534 ] .hh .v.RH ;
- mem [ q ] .hh.b1 = 9 ;
- incr ( mem [ eqtb [ 3534 ] .hh .v.RH ] .hh .v.RH ) ;
- goto lab30 ;
- }
- else {
-
- if ( mem [ q ] .hh.b0 == 7 )
- {
- t = mem [ q ] .hh.b1 ;
- if ( t == 0 )
- r = mem [ q ] .hh .v.RH ;
- else {
-
- r = q ;
- while ( t > 1 ) {
-
- r = mem [ r ] .hh .v.RH ;
- decr ( t ) ;
- }
- s = mem [ r ] .hh .v.RH ;
- if ( ! ( s >= himemmin ) )
- if ( mem [ curp + 1 ] .hh .v.LH != 0 )
- if ( mem [ mem [ curp + 1 ] .hh .v.LH + 1 ] .hh .v.RH == s )
- s = r ;
- r = mem [ s ] .hh .v.RH ;
- mem [ s ] .hh .v.RH = 0 ;
- flushnodelist ( mem [ q ] .hh .v.RH ) ;
- mem [ q ] .hh.b1 = 0 ;
- }
- if ( mem [ q + 1 ] .hh .v.RH != 0 )
- {
- s = mem [ q + 1 ] .hh .v.RH ;
- while ( mem [ s ] .hh .v.RH != 0 ) s = mem [ s ] .hh .v.RH ;
- mem [ s ] .hh .v.RH = r ;
- r = mem [ q + 1 ] .hh .v.RH ;
- mem [ q + 1 ] .hh .v.RH = 0 ;
- }
- if ( mem [ q + 1 ] .hh .v.LH != 0 )
- {
- s = mem [ q + 1 ] .hh .v.LH ;
- mem [ q ] .hh .v.RH = s ;
- while ( mem [ s ] .hh .v.RH != 0 ) s = mem [ s ] .hh .v.RH ;
- mem [ q + 1 ] .hh .v.LH = 0 ;
- q = s ;
- }
- mem [ q ] .hh .v.RH = r ;
- discbreak = true ;
- }
- else if ( ( mem [ q ] .hh.b0 == 9 ) || ( mem [ q ] .hh.b0 == 11 ) )
- mem [ q + 1 ] .cint = 0 ;
- }
- else {
-
- q = memtop - 3 ;
- while ( mem [ q ] .hh .v.RH != 0 ) q = mem [ q ] .hh .v.RH ;
- }
- r = newparamglue ( 8 ) ;
- mem [ r ] .hh .v.RH = mem [ q ] .hh .v.RH ;
- mem [ q ] .hh .v.RH = r ;
- q = r ;
- lab30: ;
- r = mem [ q ] .hh .v.RH ;
- mem [ q ] .hh .v.RH = 0 ;
- q = mem [ memtop - 3 ] .hh .v.RH ;
- mem [ memtop - 3 ] .hh .v.RH = r ;
- if ( eqtb [ 3533 ] .hh .v.RH != 0 )
- {
- r = newparamglue ( 7 ) ;
- mem [ r ] .hh .v.RH = q ;
- q = r ;
- }
- if ( curline > lastspecialline )
- {
- curwidth = secondwidth ;
- curindent = secondindent ;
- }
- else if ( eqtb [ 4056 ] .hh .v.RH == 0 )
- {
- curwidth = firstwidth ;
- curindent = firstindent ;
- }
- else {
-
- curwidth = mem [ eqtb [ 4056 ] .hh .v.RH + 2 * curline ] .cint ;
- curindent = mem [ eqtb [ 4056 ] .hh .v.RH + 2 * curline - 1 ] .cint ;
- }
- adjusttail = memtop - 5 ;
- justbox = hpack ( q , curwidth , 0 ) ;
- mem [ justbox + 4 ] .cint = curindent ;
- appendtovlist ( justbox ) ;
- if ( memtop - 5 != adjusttail )
- {
- mem [ curlist .tailfield ] .hh .v.RH = mem [ memtop - 5 ] .hh .v.RH ;
- curlist .tailfield = adjusttail ;
- }
- adjusttail = 0 ;
- if ( curline + 1 != bestline )
- {
- pen = eqtb [ 5280 ] .cint ;
- if ( curline == curlist .pgfield + 1 )
- pen = pen + eqtb [ 5272 ] .cint ;
- if ( curline + 2 == bestline )
- pen = pen + finalwidowpenalty ;
- if ( discbreak )
- pen = pen + eqtb [ 5275 ] .cint ;
- if ( pen != 0 )
- {
- r = newpenalty ( pen ) ;
- mem [ curlist .tailfield ] .hh .v.RH = r ;
- curlist .tailfield = r ;
- }
- }
- incr ( curline ) ;
- curp = mem [ curp + 1 ] .hh .v.LH ;
- if ( curp != 0 )
- {
- r = memtop - 3 ;
- while ( true ) {
-
- q = mem [ r ] .hh .v.RH ;
- if ( q == mem [ curp + 1 ] .hh .v.RH )
- goto lab31 ;
- if ( ( q >= himemmin ) )
- goto lab31 ;
- if ( ( mem [ q ] .hh.b0 < 9 ) )
- goto lab31 ;
- if ( mem [ q ] .hh.b1 == 2 )
- if ( mem [ q ] .hh.b0 == 11 )
- goto lab31 ;
- r = q ;
- }
- lab31: if ( r != memtop - 3 )
- {
- mem [ r ] .hh .v.RH = 0 ;
- flushnodelist ( mem [ memtop - 3 ] .hh .v.RH ) ;
- mem [ memtop - 3 ] .hh .v.RH = q ;
- }
- }
- } while ( ! ( curp == 0 ) ) ;
- if ( ( curline != bestline ) || ( mem [ memtop - 3 ] .hh .v.RH != 0 ) )
- confusion ( 791 ) ;
- curlist .pgfield = bestline - 1 ;
- }
- smallnumber zreconstitute ( j , n )
- smallnumber j , n ;
- {/* 22 30 */ register smallnumber Result; reconstitute_regmem
- halfword p ;
- halfword s ;
- fourquarters q ;
- quarterword c ;
- quarterword d ;
- scaled w ;
- integer r ;
- hyphenpassed = 0 ;
- s = memtop - 4 ;
- w = 0 ;
- d = hu [ j ] ;
- c = d ;
- while ( true ) {
-
- lab22: p = getavail () ;
- mem [ p ] .hh.b0 = hf ;
- mem [ p ] .hh.b1 = c ;
- mem [ s ] .hh .v.RH = p ;
- if ( j == n )
- goto lab30 ;
- q = fontinfo [ charbase [ hf ] + d ] .qqqq ;
- if ( ( ( q .b2 ) % 4 ) != 1 )
- goto lab30 ;
- r = ligkernbase [ hf ] + q .b3 ;
- c = hu [ j + 1 ] ;
- while ( true ) {
-
- q = fontinfo [ r ] .qqqq ;
- if ( q .b1 == c )
- {
- if ( odd ( hyf [ j ] ) && ( hyphenpassed == 0 ) )
- hyphenpassed = j ;
- if ( q .b2 < 128 )
- {
- d = q .b3 ;
- incr ( j ) ;
- s = p ;
- goto lab22 ;
- }
- else {
-
- w = fontinfo [ kernbase [ hf ] + q .b3 ] .cint ;
- goto lab30 ;
- }
- }
- else if ( q .b0 < 128 )
- incr ( r ) ;
- else goto lab30 ;
- }
- }
- lab30: ;
- if ( s != memtop - 4 )
- {
- p = newligature ( hf , d , mem [ memtop - 4 ] .hh .v.RH ) ;
- mem [ memtop - 4 ] .hh .v.RH = p ;
- }
- if ( w != 0 )
- mem [ mem [ memtop - 4 ] .hh .v.RH ] .hh .v.RH = newkern ( w ) ;
- Result = j ;
- return(Result) ;
- }
- hyphenate () {
- /* 30 40 45 41 10 */ hyphenate_regmem
- schar i, j, l ;
- halfword q, r, s ;
- halfword majortail, minortail ;
- ASCIIcode c ;
- halfword hyfnode ;
- triepointer z ;
- quarterword v ;
- hyphpointer h ;
- strnumber k ;
- poolpointer u ;
- {register integer for_end; j = 0 ; for_end = hn ; if ( j <= for_end) do
- hyf [ j ] = 0 ;
- while ( j++ < for_end ) ; }
- h = hc [ 1 ] ;
- {register integer for_end; j = 2 ; for_end = hn ; if ( j <= for_end) do
- h = ( h + h + hc [ j ] ) % 307 ;
- while ( j++ < for_end ) ; }
- while ( true ) {
-
- k = hyphword [ h ] ;
- if ( k == 0 )
- goto lab45 ;
- if ( ( strstart [ k + 1 ] - strstart [ k ] ) < hn )
- goto lab45 ;
- if ( ( strstart [ k + 1 ] - strstart [ k ] ) == hn )
- {
- j = 1 ;
- u = strstart [ k ] ;
- do {
- if ( strpool [ u ] < hc [ j ] )
- goto lab45 ;
- if ( strpool [ u ] > hc [ j ] )
- goto lab30 ;
- incr ( j ) ;
- incr ( u ) ;
- } while ( ! ( j > hn ) ) ;
- s = hyphlist [ h ] ;
- while ( s != 0 ) {
-
- hyf [ mem [ s ] .hh .v.LH ] = 1 ;
- s = mem [ s ] .hh .v.RH ;
- }
- goto lab40 ;
- }
- lab30: ;
- if ( h > 0 )
- decr ( h ) ;
- else h = 307 ;
- }
- lab45: ;
- hc [ 0 ] = 127 ;
- hc [ hn + 1 ] = 127 ;
- hc [ hn + 2 ] = 256 ;
- {register integer for_end; j = 0 ; for_end = hn - 2 ; if ( j <= for_end) do
- {
- z = hc [ j ] ;
- l = j ;
- while ( hc [ l ] == trie [ z ] .b1 ) {
-
- if ( trie [ z ] .b0 != 0 )
- {
- v = trie [ z ] .b0 ;
- do {
- i = l - hyfdistance [ v ] ;
- if ( hyfnum [ v ] > hyf [ i ] )
- hyf [ i ] = hyfnum [ v ] ;
- v = hyfnext [ v ] ;
- } while ( ! ( v == 0 ) ) ;
- }
- incr ( l ) ;
- z = trie [ z ] .v.RH + hc [ l ] ;
- }
- }
- while ( j++ < for_end ) ; }
- lab40: hyf [ 1 ] = 0 ;
- hyf [ hn - 2 ] = 0 ;
- hyf [ hn - 1 ] = 0 ;
- hyf [ hn ] = 0 ;
- {register integer for_end; j = 2 ; for_end = hn - 3 ; if ( j <= for_end) do
- if ( odd ( hyf [ j ] ) )
- goto lab41 ;
- while ( j++ < for_end ) ; }
- return ;
- lab41: ;
- q = mem [ hb ] .hh .v.RH ;
- mem [ hb ] .hh .v.RH = 0 ;
- s = curp ;
- while ( mem [ s ] .hh .v.RH != ha ) s = mem [ s ] .hh .v.RH ;
- mem [ s ] .hh .v.RH = 0 ;
- flushnodelist ( ha ) ;
- j = 0 ;
- do {
- l = j ;
- j = reconstitute ( j + 1 , hn ) ;
- if ( hyphenpassed != 0 )
- {
- r = getnode ( 2 ) ;
- mem [ s ] .hh .v.RH = r ;
- mem [ r ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
- mem [ r ] .hh.b0 = 7 ;
- majortail = mem [ memtop - 4 ] .hh .v.RH ;
- if ( mem [ majortail ] .hh .v.RH != 0 )
- majortail = mem [ majortail ] .hh .v.RH ;
- i = hyphenpassed ;
- minortail = 0 ;
- hyfnode = newcharacter ( hf , hyfchar ) ;
- if ( hyfnode != 0 )
- {
- incr ( i ) ;
- c = hu [ i ] ;
- hu [ i ] = hyfchar ;
- }
- do {
- l = reconstitute ( l + 1 , i ) ;
- if ( minortail == 0 )
- mem [ r + 1 ] .hh .v.LH = mem [ memtop - 4 ] .hh .v.RH ;
- else mem [ minortail ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
- minortail = mem [ memtop - 4 ] .hh .v.RH ;
- if ( mem [ minortail ] .hh .v.RH != 0 )
- minortail = mem [ minortail ] .hh .v.RH ;
- } while ( ! ( l == i ) ) ;
- if ( hyfnode != 0 )
- {
- hu [ i ] = c ;
- {
- mem [ hyfnode ] .hh .v.RH = avail ;
- avail = hyfnode ;
- ;
- #ifdef STAT
- decr ( dynused ) ;
- #endif /* STAT */
- }
- decr ( i ) ;
- l = i ;
- }
- hyf [ i ] = 0 ;
- minortail = 0 ;
- mem [ r + 1 ] .hh .v.RH = 0 ;
- while ( l < j ) {
-
- do {
- l = reconstitute ( l + 1 , hn ) ;
- if ( minortail == 0 )
- mem [ r + 1 ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
- else mem [ minortail ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
- minortail = mem [ memtop - 4 ] .hh .v.RH ;
- if ( mem [ minortail ] .hh .v.RH != 0 )
- {
- hyf [ l ] = 0 ;
- minortail = mem [ minortail ] .hh .v.RH ;
- }
- } while ( ! ( l >= j ) ) ;
- while ( l > j ) {
-
- j = reconstitute ( j + 1 , hn ) ;
- mem [ majortail ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
- majortail = mem [ memtop - 4 ] .hh .v.RH ;
- if ( mem [ majortail ] .hh .v.RH != 0 )
- {
- hyf [ j ] = 0 ;
- majortail = mem [ majortail ] .hh .v.RH ;
- }
- }
- }
- i = 0 ;
- s = r ;
- while ( mem [ s ] .hh .v.RH != 0 ) {
-
- incr ( i ) ;
- s = mem [ s ] .hh .v.RH ;
- }
- mem [ r ] .hh.b1 = i ;
- }
- else {
-
- mem [ s ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
- s = mem [ s ] .hh .v.RH ;
- if ( mem [ s ] .hh .v.RH != 0 )
- s = mem [ s ] .hh .v.RH ;
- }
- if ( odd ( hyf [ j ] ) )
- {
- r = newdisc () ;
- mem [ r + 1 ] .hh .v.LH = newcharacter ( hf , hyfchar ) ;
- mem [ s ] .hh .v.RH = r ;
- s = r ;
- }
- } while ( ! ( j == hn ) ) ;
- mem [ s ] .hh .v.RH = q ;
- }
- zlinebreak ( finalwidowpenalty )
- integer finalwidowpenalty ;
- {/* 30 31 32 33 34 */ linebreak_regmem
- boolean autobreaking ;
- halfword prevp ;
- halfword q, r, s ;
- internalfontnumber f ;
- smallnumber j ;
- unsigned char c ;
- packbeginline = curlist .mlfield ;
- mem [ memtop - 3 ] .hh .v.RH = mem [ curlist .headfield ] .hh .v.RH ;
- if ( ( curlist .tailfield >= himemmin ) )
- {
- mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( 10000 ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- else if ( mem [ curlist .tailfield ] .hh.b0 != 10 )
- {
- mem [ curlist .tailfield ] .hh .v.RH = newpenalty ( 10000 ) ;
- curlist .tailfield = mem [ curlist .tailfield ] .hh .v.RH ;
- }
- else {
-
- mem [ curlist .tailfield ] .hh.b0 = 12 ;
- deleteglueref ( mem [ curlist .tailfield + 1 ] .hh .v.LH ) ;
- flushnodelist ( mem [ curlist .tailfield + 1 ] .hh .v.RH ) ;
- mem [ curlist .tailfield + 1 ] .cint = 10000 ;
- }
- mem [ curlist .tailfield ] .hh .v.RH = newparamglue ( 14 ) ;
- popnest () ;
- noshrinkerroryet = true ;
- if ( ( mem [ eqtb [ 3533 ] .hh .v.RH ] .hh.b1 != 0 ) && ( mem [ eqtb [ 3533
- ] .hh .v.RH + 3 ] .cint != 0 ) )
- {
- eqtb [ 3533 ] .hh .v.RH = finiteshrink ( eqtb [ 3533 ] .hh .v.RH ) ;
- }
- if ( ( mem [ eqtb [ 3534 ] .hh .v.RH ] .hh.b1 != 0 ) && ( mem [ eqtb [ 3534
- ] .hh .v.RH + 3 ] .cint != 0 ) )
- {
- eqtb [ 3534 ] .hh .v.RH = finiteshrink ( eqtb [ 3534 ] .hh .v.RH ) ;
- }
- q = eqtb [ 3533 ] .hh .v.RH ;
- r = eqtb [ 3534 ] .hh .v.RH ;
- background [ 1 ] = mem [ q + 1 ] .cint + mem [ r + 1 ] .cint ;
- background [ 2 ] = 0 ;
- background [ 3 ] = 0 ;
- background [ 4 ] = 0 ;
- background [ 5 ] = 0 ;
- background [ 2 + mem [ q ] .hh.b0 ] = mem [ q + 2 ] .cint ;
- background [ 2 + mem [ r ] .hh.b0 ] = background [ 2 + mem [ r ] .hh.b0 ] +
- mem [ r + 2 ] .cint ;
- background [ 6 ] = mem [ q + 3 ] .cint + mem [ r + 3 ] .cint ;
- minimumdemerits = 1073741823L ;
- minimaldemerits [ 3 ] = 1073741823L ;
- minimaldemerits [ 2 ] = 1073741823L ;
- minimaldemerits [ 1 ] = 1073741823L ;
- minimaldemerits [ 0 ] = 1073741823L ;
- if ( eqtb [ 4056 ] .hh .v.RH == 0 )
- if ( eqtb [ 5718 ] .cint == 0 )
- {
- lastspecialline = 0 ;
- secondwidth = eqtb [ 5704 ] .cint ;
- secondindent = 0 ;
- }
- else {
-
- lastspecialline = abs ( eqtb [ 5308 ] .cint ) ;
- if ( eqtb [ 5308 ] .cint < 0 )
- {
- firstwidth = eqtb [ 5704 ] .cint - abs ( eqtb [ 5718 ] .cint ) ;
- if ( eqtb [ 5718 ] .cint >= 0 )
- firstindent = eqtb [ 5718 ] .cint ;
- else firstindent = 0 ;
- secondwidth = eqtb [ 5704 ] .cint ;
- secondindent = 0 ;
- }
- else {
-
- firstwidth = eqtb [ 5704 ] .cint ;
- firstindent = 0 ;
- secondwidth = eqtb [ 5704 ] .cint - abs ( eqtb [ 5718 ] .cint ) ;
- if ( eqtb [ 5718 ] .cint >= 0 )
- secondindent = eqtb [ 5718 ] .cint ;
- else secondindent = 0 ;
- }
- }
- else {
-
- lastspecialline = mem [ eqtb [ 4056 ] .hh .v.RH ] .hh .v.LH - 1 ;
- secondwidth = mem [ eqtb [ 4056 ] .hh .v.RH + 2 * ( lastspecialline + 1 )
- ] .cint ;
- secondindent = mem [ eqtb [ 4056 ] .hh .v.RH + 2 * lastspecialline + 1 ]
- .cint ;
- }
- if ( eqtb [ 5286 ] .cint == 0 )
- easyline = lastspecialline ;
- else easyline = 65535L ;
- threshold = eqtb [ 5267 ] .cint ;
- if ( threshold >= 0 )
- {
- ;
- #ifdef STAT
- if ( eqtb [ 5299 ] .cint > 0 )
- {
- begindiagnostic () ;
- printnl ( 787 ) ;
- }
- #endif /* STAT */
- secondpass = false ;
- }
- else {
-
- threshold = eqtb [ 5268 ] .cint ;
- secondpass = true ;
- ;
- #ifdef STAT
- if ( eqtb [ 5299 ] .cint > 0 )
- begindiagnostic () ;
- #endif /* STAT */
- }
- while ( true ) {
-
- q = getnode ( 3 ) ;
- mem [ q ] .hh.b0 = 0 ;
- mem [ q ] .hh.b1 = 2 ;
- mem [ q ] .hh .v.RH = memtop - 7 ;
- mem [ q + 1 ] .hh .v.RH = 0 ;
- mem [ q + 1 ] .hh .v.LH = curlist .pgfield + 1 ;
- mem [ q + 2 ] .cint = 0 ;
- mem [ memtop - 7 ] .hh .v.RH = q ;
- activewidth [ 1 ] = background [ 1 ] ;
- activewidth [ 2 ] = background [ 2 ] ;
- activewidth [ 3 ] = background [ 3 ] ;
- activewidth [ 4 ] = background [ 4 ] ;
- activewidth [ 5 ] = background [ 5 ] ;
- activewidth [ 6 ] = background [ 6 ] ;
- passive = 0 ;
- printednode = memtop - 3 ;
- passnumber = 0 ;
- fontinshortdisplay = 0 ;
- curp = mem [ memtop - 3 ] .hh .v.RH ;
- autobreaking = true ;
- prevp = curp ;
- while ( ( curp != 0 ) && ( mem [ memtop - 7 ] .hh .v.RH != memtop - 7 ) )
- {
- if ( ( curp >= himemmin ) )
- {
- prevp = curp ;
- do {
- f = mem [ curp ] .hh.b0 ;
- activewidth [ 1 ] = activewidth [ 1 ] + fontinfo [ widthbase [ f ] +
- fontinfo [ charbase [ f ] + mem [ curp ] .hh.b1 ] .qqqq .b0 ] .cint
- ;
- curp = mem [ curp ] .hh .v.RH ;
- } while ( ! ( ! ( curp >= himemmin ) ) ) ;
- }
- switch ( mem [ curp ] .hh.b0 )
- {case 0 :
- case 1 :
- case 2 :
- activewidth [ 1 ] = activewidth [ 1 ] + mem [ curp + 1 ] .cint ;
- break ;
- case 8 :
- ;
- break ;
- case 10 :
- {
- if ( autobreaking )
- {
- if ( ( prevp >= himemmin ) )
- trybreak ( 0 , 0 ) ;
- else if ( ( mem [ prevp ] .hh.b0 < 9 ) )
- trybreak ( 0 , 0 ) ;
- }
- {
- if ( ( mem [ mem [ curp + 1 ] .hh .v.LH ] .hh.b1 != 0 ) && ( mem [
- mem [ curp + 1 ] .hh .v.LH + 3 ] .cint != 0 ) )
- {
- mem [ curp + 1 ] .hh .v.LH = finiteshrink ( mem [ curp + 1 ] .hh
- .v.LH ) ;
- }
- q = mem [ curp + 1 ] .hh .v.LH ;
- activewidth [ 1 ] = activewidth [ 1 ] + mem [ q + 1 ] .cint ;
- activewidth [ 2 + mem [ q ] .hh.b0 ] = activewidth [ 2 + mem [ q ]
- .hh.b0 ] + mem [ q + 2 ] .cint ;
- activewidth [ 6 ] = activewidth [ 6 ] + mem [ q + 3 ] .cint ;
- }
- if ( secondpass && autobreaking )
- {
- s = mem [ curp ] .hh .v.RH ;
- if ( s != 0 )
- {
- while ( true ) {
-
- if ( ( s >= himemmin ) )
- {
- c = mem [ s ] .hh.b1 ;
- hf = mem [ s ] .hh.b0 ;
- }
- else if ( mem [ s ] .hh.b0 == 6 )
- {
- q = mem [ s + 1 ] .hh .v.RH ;
- c = mem [ q ] .hh.b1 ;
- hf = mem [ q ] .hh.b0 ;
- }
- else if ( ( mem [ s ] .hh.b0 == 11 ) && ( mem [ s ] .hh.b1 ==
- 0 ) )
- c = 128 ;
- else if ( mem [ s ] .hh.b0 == 8 )
- c = 128 ;
- else goto lab31 ;
- if ( c < 128 )
- if ( eqtb [ 4755 + c ] .hh .v.RH != 0 )
- if ( ( eqtb [ 4755 + c ] .hh .v.RH == c ) || ( eqtb [ 5305 ]
- .cint > 0 ) )
- goto lab32 ;
- else goto lab31 ;
- s = mem [ s ] .hh .v.RH ;
- }
- lab32: hyfchar = hyphenchar [ hf ] ;
- if ( hyfchar < 0 )
- goto lab31 ;
- if ( hyfchar > 255 )
- goto lab31 ;
- ha = s ;
- hn = 0 ;
- while ( true ) {
-
- if ( ( s >= himemmin ) )
- {
- if ( mem [ s ] .hh.b0 != hf )
- goto lab33 ;
- c = mem [ s ] .hh.b1 ;
- if ( c >= 128 )
- goto lab33 ;
- if ( ( eqtb [ 4755 + c ] .hh .v.RH == 0 ) || ( hn == 63 ) )
- goto lab33 ;
- hb = s ;
- incr ( hn ) ;
- hu [ hn ] = c ;
- hc [ hn ] = eqtb [ 4755 + c ] .hh .v.RH - 1 ;
- }
- else if ( mem [ s ] .hh.b0 == 6 )
- {
- j = hn ;
- q = mem [ s + 1 ] .hh .v.RH ;
- if ( mem [ q ] .hh.b0 != hf )
- goto lab33 ;
- do {
- c = mem [ q ] .hh.b1 ;
- if ( c >= 128 )
- goto lab33 ;
- if ( ( eqtb [ 4755 + c ] .hh .v.RH == 0 ) || ( j == 63 ) )
- goto lab33 ;
- incr ( j ) ;
- hu [ j ] = c ;
- hc [ j ] = eqtb [ 4755 + c ] .hh .v.RH - 1 ;
- q = mem [ q ] .hh .v.RH ;
- } while ( ! ( q == 0 ) ) ;
- hb = s ;
- hn = j ;
- }
- else if ( ( mem [ s ] .hh.b0 != 11 ) || ( mem [ s ] .hh.b1 !=
- 0 ) )
- goto lab33 ;
- s = mem [ s ] .hh .v.RH ;
- }
- lab33: ;
- if ( hn < 5 )
- goto lab31 ;
- while ( true ) {
-
- if ( ! ( ( s >= himemmin ) ) )
- switch ( mem [ s ] .hh.b0 )
- {case 6 :
- ;
- break ;
- case 11 :
- if ( mem [ s ] .hh.b1 != 0 )
- goto lab34 ;
- break ;
- case 8 :
- case 10 :
- case 12 :
- case 3 :
- case 5 :
- case 4 :
- goto lab34 ;
- break ;
- default:
- goto lab31 ;
- break ;
- }
- s = mem [ s ] .hh .v.RH ;
- }
- lab34: ;
- hyphenate () ;
- }
- lab31: ;
- }
- }
- break ;
- case 11 :
- {
- if ( ! ( mem [ curp ] .hh .v.RH >= himemmin ) && autobreaking )
- if ( mem [ mem [ curp ] .hh .v.RH ] .hh.b0 == 10 )
- trybreak ( 0 , 0 ) ;
- activewidth [ 1 ] = activewidth [ 1 ] + mem [ curp + 1 ] .cint ;
- }
- break ;
- case 6 :
- {
- f = mem [ curp + 1 ] .hh.b0 ;
- activewidth [ 1 ] = activewidth [ 1 ] + fontinfo [ widthbase [ f ] +
- fontinfo [ charbase [ f ] + mem [ curp + 1 ] .hh.b1 ] .qqqq .b0 ]
- .cint ;
- }
- break ;
- case 7 :
- {
- s = mem [ curp + 1 ] .hh .v.LH ;
- discwidth = 0 ;
- if ( s == 0 )
- trybreak ( eqtb [ 5271 ] .cint , 1 ) ;
- else {
-
- do {
- if ( ( s >= himemmin ) )
- {
- f = mem [ s ] .hh.b0 ;
- discwidth = discwidth + fontinfo [ widthbase [ f ] + fontinfo
- [ charbase [ f ] + mem [ s ] .hh.b1 ] .qqqq .b0 ] .cint ;
- }
- else switch ( mem [ s ] .hh.b0 )
- {case 6 :
- {
- f = mem [ s + 1 ] .hh.b0 ;
- discwidth = discwidth + fontinfo [ widthbase [ f ] +
- fontinfo [ charbase [ f ] + mem [ s + 1 ] .hh.b1 ] .qqqq .b0
- ] .cint ;
- }
- break ;
- case 0 :
- case 1 :
- case 2 :
- case 11 :
- discwidth = discwidth + mem [ s + 1 ] .cint ;
- break ;
- default:
- confusion ( 790 ) ;
- break ;
- }
- s = mem [ s ] .hh .v.RH ;
- } while ( ! ( s == 0 ) ) ;
- activewidth [ 1 ] = activewidth [ 1 ] + discwidth ;
- trybreak ( eqtb [ 5270 ] .cint , 1 ) ;
- activewidth [ 1 ] = activewidth [ 1 ] - discwidth ;
- }
- }
- break ;
- case 9 :
- {
- autobreaking = ( mem [ curp ] .hh.b1 == 1 ) ;
- {
- if ( ! ( mem [ curp ] .hh .v.RH >= himemmin ) && autobreaking )
- if ( mem [ mem [ curp ] .hh .v.RH ] .hh.b0 == 10 )
- trybreak ( 0 , 0 ) ;
- activewidth [ 1 ] = activewidth [ 1 ] + mem [ curp + 1 ] .cint ;
- }
- }
- break ;
- case 12 :
- trybreak ( mem [ curp + 1 ] .cint , 0 ) ;
- break ;
- case 4 :
- case 3 :
- case 5 :
- ;
- break ;
- default:
- confusion ( 789 ) ;
- break ;
- }
- prevp = curp ;
- curp = mem [ curp ] .hh .v.RH ;
- }
- if ( curp == 0 )
- {
- trybreak ( -10000 , 1 ) ;
- if ( mem [ memtop - 7 ] .hh .v.RH != memtop - 7 )
- {
- r = mem [ memtop - 7 ] .hh .v.RH ;
- fewestdemerits = 1073741823L ;
- do {
- if ( mem [ r ] .hh.b0 != 2 )
- if ( mem [ r + 2 ] .cint < fewestdemerits )
- {
- fewestdemerits = mem [ r + 2 ] .cint ;
- bestbet = r ;
- }
- r = mem [ r ] .hh .v.RH ;
- } while ( ! ( r == memtop - 7 ) ) ;
- bestline = mem [ bestbet + 1 ] .hh .v.LH ;
- if ( eqtb [ 5286 ] .cint == 0 )
- goto lab30 ;
- {
- r = mem [ memtop - 7 ] .hh .v.RH ;
- actuallooseness = 0 ;
- do {
- if ( mem [ r ] .hh.b0 != 2 )
- {
- linediff = mem [ r + 1 ] .hh .v.LH - bestline ;
- if ( ( ( linediff < actuallooseness ) && ( eqtb [ 5286 ] .cint
- <= linediff ) ) || ( ( linediff > actuallooseness ) && ( eqtb [
- 5286 ] .cint >= linediff ) ) )
- {
- bestbet = r ;
- actuallooseness = linediff ;
- fewestdemerits = mem [ r + 2 ] .cint ;
- }
- else if ( ( linediff == actuallooseness ) && ( mem [ r + 2 ]
- .cint < fewestdemerits ) )
- {
- bestbet = r ;
- fewestdemerits = mem [ r + 2 ] .cint ;
- }
- }
- r = mem [ r ] .hh .v.RH ;
- } while ( ! ( r == memtop - 7 ) ) ;
- bestline = mem [ bestbet + 1 ] .hh .v.LH ;
- }
- if ( ( actuallooseness == eqtb [ 5286 ] .cint ) || secondpass )
- goto lab30 ;
- }
- }
- q = mem [ memtop - 7 ] .hh .v.RH ;
- while ( q != memtop - 7 ) {
-
- curp = mem [ q ] .hh .v.RH ;
- if ( mem [ q ] .hh.b0 == 2 )
- freenode ( q , 7 ) ;
- else freenode ( q , 3 ) ;
- q = curp ;
- }
- q = passive ;
- while ( q != 0 ) {
-
- curp = mem [ q ] .hh .v.RH ;
- freenode ( q , 2 ) ;
- q = curp ;
- }
- ;
- #ifdef STAT
- if ( eqtb [ 5299 ] .cint > 0 )
- printnl ( 788 ) ;
- #endif /* STAT */
- threshold = eqtb [ 5268 ] .cint ;
- secondpass = true ;
- }
- lab30:
- ;
- #ifdef STAT
- if ( eqtb [ 5299 ] .cint > 0 )
- enddiagnostic ( true ) ;
- #endif /* STAT */
- postlinebreak ( finalwidowpenalty ) ;
- q = mem [ memtop - 7 ] .hh .v.RH ;
- while ( q != memtop - 7 ) {
-
- curp = mem [ q ] .hh .v.RH ;
- if ( mem [ q ] .hh.b0 == 2 )
- freenode ( q , 7 ) ;
- else freenode ( q , 3 ) ;
- q = curp ;
- }
- q = passive ;
- while ( q != 0 ) {
-
- curp = mem [ q ] .hh .v.RH ;
- freenode ( q , 2 ) ;
- q = curp ;
- }
- packbeginline = 0 ;
- }
- newhyphexceptions () {
- /* 21 10 40 45 30 */ newhyphexceptions_regmem
- smallnumber n ;
- smallnumber j ;
- hyphpointer h ;
- strnumber k ;
- halfword p ;
- halfword q ;
- strnumber s, t ;
- poolpointer u, v ;
- scanleftbrace () ;
- n = 0 ;
- p = 0 ;
- while ( true ) {
-
- getxtoken () ;
- lab21: switch ( curcmd )
- {case 11 :
- case 12 :
- case 67 :
- if ( curchr == 45 )
- {
- if ( n > 1 )
- {
- q = getavail () ;
- mem [ q ] .hh .v.RH = p ;
- mem [ q ] .hh .v.LH = n ;
- p = q ;
- }
- }
- else {
-
- if ( ( curchr > 127 ) || ( eqtb [ 4755 + curchr ] .hh .v.RH == 0 ) )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 797 ) ;
- }
- {
- helpptr = 2 ;
- helpline [ 1 ] = 798 ;
- helpline [ 0 ] = 799 ;
- }
- error () ;
- }
- else if ( n < 63 )
- {
- incr ( n ) ;
- hc [ n ] = eqtb [ 4755 + curchr ] .hh .v.RH - 1 ;
- }
- }
- break ;
- case 16 :
- {
- scancharnum () ;
- curchr = curval ;
- curcmd = 67 ;
- goto lab21 ;
- }
- break ;
- case 10 :
- case 2 :
- {
- if ( n > 4 )
- {
- {
- if ( poolptr + n > poolsize )
- overflow ( 128 , poolsize - initpoolptr ) ;
- }
- h = 0 ;
- {register integer for_end; j = 1 ; for_end = n ; if ( j <= for_end)
- do
- {
- h = ( h + h + hc [ j ] ) % 307 ;
- {
- strpool [ poolptr ] = hc [ j ] ;
- incr ( poolptr ) ;
- }
- }
- while ( j++ < for_end ) ; }
- s = makestring () ;
- while ( true ) {
-
- if ( p == 0 )
- goto lab30 ;
- if ( mem [ p ] .hh .v.LH < n - 2 )
- goto lab30 ;
- q = mem [ p ] .hh .v.RH ;
- {
- mem [ p ] .hh .v.RH = avail ;
- avail = p ;
- ;
- #ifdef STAT
- decr ( dynused ) ;
- #endif /* STAT */
- }
- p = q ;
- }
- lab30: if ( hyphcount == 307 )
- overflow ( 800 , 307 ) ;
- incr ( hyphcount ) ;
- while ( hyphword [ h ] != 0 ) {
-
- k = hyphword [ h ] ;
- if ( ( strstart [ k + 1 ] - strstart [ k ] ) < ( strstart [ s + 1
- ] - strstart [ s ] ) )
- goto lab40 ;
- if ( ( strstart [ k + 1 ] - strstart [ k ] ) > ( strstart [ s + 1
- ] - strstart [ s ] ) )
- goto lab45 ;
- u = strstart [ k ] ;
- v = strstart [ s ] ;
- do {
- if ( strpool [ u ] < strpool [ v ] )
- goto lab40 ;
- if ( strpool [ u ] > strpool [ v ] )
- goto lab45 ;
- incr ( u ) ;
- incr ( v ) ;
- } while ( ! ( u == strstart [ k + 1 ] ) ) ;
- lab40: q = hyphlist [ h ] ;
- hyphlist [ h ] = p ;
- p = q ;
- t = hyphword [ h ] ;
- hyphword [ h ] = s ;
- s = t ;
- lab45: ;
- if ( h > 0 )
- decr ( h ) ;
- else h = 307 ;
- }
- hyphword [ h ] = s ;
- hyphlist [ h ] = p ;
- }
- if ( curcmd == 2 )
- return ;
- n = 0 ;
- p = 0 ;
- }
- break ;
- default:
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 536 ) ;
- }
- printesc ( 793 ) ;
- print ( 794 ) ;
- {
- helpptr = 2 ;
- helpline [ 1 ] = 795 ;
- helpline [ 0 ] = 796 ;
- }
- error () ;
- }
- break ;
- }
- }
- }
- halfword zprunepagetop ( p )
- halfword p ;
- {register halfword Result; prunepagetop_regmem
- halfword prevp ;
- halfword q ;
- prevp = memtop - 3 ;
- mem [ memtop - 3 ] .hh .v.RH = p ;
- while ( p != 0 ) switch ( mem [ p ] .hh.b0 )
- {case 0 :
- case 1 :
- case 2 :
- {
- q = newskipparam ( 10 ) ;
- mem [ prevp ] .hh .v.RH = q ;
- mem [ q ] .hh .v.RH = p ;
- if ( mem [ tempptr + 1 ] .cint > mem [ p + 3 ] .cint )
- mem [ tempptr + 1 ] .cint = mem [ tempptr + 1 ] .cint - mem [ p + 3 ]
- .cint ;
- else mem [ tempptr + 1 ] .cint = 0 ;
- p = 0 ;
- }
- break ;
- case 8 :
- case 4 :
- case 3 :
- {
- prevp = p ;
- p = mem [ prevp ] .hh .v.RH ;
- }
- break ;
- case 10 :
- case 11 :
- case 12 :
- {
- q = p ;
- p = mem [ q ] .hh .v.RH ;
- mem [ q ] .hh .v.RH = 0 ;
- mem [ prevp ] .hh .v.RH = p ;
- flushnodelist ( q ) ;
- }
- break ;
- default:
- confusion ( 807 ) ;
- break ;
- }
- Result = mem [ memtop - 3 ] .hh .v.RH ;
- return(Result) ;
- }
- halfword zvertbreak ( p , h , d )
- halfword p ;
- scaled h , d ;
- {/* 30 45 90 */ register halfword Result; vertbreak_regmem
- halfword prevp ;
- halfword q, r ;
- integer pi ;
- integer b ;
- integer leastcost ;
- halfword bestplace ;
- scaled prevdp ;
- smallnumber t ;
- prevp = p ;
- leastcost = 1073741823L ;
- activewidth [ 1 ] = 0 ;
- activewidth [ 2 ] = 0 ;
- activewidth [ 3 ] = 0 ;
- activewidth [ 4 ] = 0 ;
- activewidth [ 5 ] = 0 ;
- activewidth [ 6 ] = 0 ;
- prevdp = 0 ;
- while ( true ) {
-
- if ( p == 0 )
- pi = -10000 ;
- else switch ( mem [ p ] .hh.b0 )
- {case 0 :
- case 1 :
- case 2 :
- {
- activewidth [ 1 ] = activewidth [ 1 ] + prevdp + mem [ p + 3 ] .cint ;
- prevdp = mem [ p + 2 ] .cint ;
- goto lab45 ;
- }
- break ;
- case 8 :
- goto lab45 ;
- break ;
- case 10 :
- if ( ( mem [ prevp ] .hh.b0 < 9 ) )
- pi = 0 ;
- else goto lab90 ;
- break ;
- case 11 :
- {
- if ( mem [ p ] .hh .v.RH == 0 )
- t = 12 ;
- else t = mem [ mem [ p ] .hh .v.RH ] .hh.b0 ;
- if ( t == 10 )
- pi = 0 ;
- else goto lab90 ;
- }
- break ;
- case 12 :
- pi = mem [ p + 1 ] .cint ;
- break ;
- case 4 :
- case 3 :
- goto lab45 ;
- break ;
- default:
- confusion ( 808 ) ;
- break ;
- }
- if ( pi < 10000 )
- {
- if ( activewidth [ 1 ] < h )
- if ( ( activewidth [ 3 ] != 0 ) || ( activewidth [ 4 ] != 0 ) || (
- activewidth [ 5 ] != 0 ) )
- b = 0 ;
- else b = badness ( h - activewidth [ 1 ] , activewidth [ 2 ] ) ;
- else if ( activewidth [ 1 ] - h > activewidth [ 6 ] )
- b = 1073741823L ;
- else b = badness ( activewidth [ 1 ] - h , activewidth [ 6 ] ) ;
- if ( b < 1073741823L )
- if ( pi <= -10000 )
- b = pi ;
- else if ( b < 10000 )
- b = b + pi ;
- else b = 100000L ;
- if ( b <= leastcost )
- {
- bestplace = p ;
- leastcost = b ;
- bestheightplusdepth = activewidth [ 1 ] + prevdp ;
- }
- if ( ( b == 1073741823L ) || ( pi <= -10000 ) )
- goto lab30 ;
- }
- if ( ( mem [ p ] .hh.b0 < 10 ) || ( mem [ p ] .hh.b0 > 11 ) )
- goto lab45 ;
- lab90: if ( mem [ p ] .hh.b0 == 11 )
- q = p ;
- else {
-
- q = mem [ p + 1 ] .hh .v.LH ;
- activewidth [ 2 + mem [ q ] .hh.b0 ] = activewidth [ 2 + mem [ q ]
- .hh.b0 ] + mem [ q + 2 ] .cint ;
- activewidth [ 6 ] = activewidth [ 6 ] + mem [ q + 3 ] .cint ;
- if ( ( mem [ q ] .hh.b1 != 0 ) && ( mem [ q + 3 ] .cint != 0 ) )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 809 ) ;
- }
- {
- helpptr = 4 ;
- helpline [ 3 ] = 810 ;
- helpline [ 2 ] = 811 ;
- helpline [ 1 ] = 812 ;
- helpline [ 0 ] = 776 ;
- }
- error () ;
- r = newspec ( q ) ;
- mem [ r ] .hh.b1 = 0 ;
- deleteglueref ( q ) ;
- mem [ p + 1 ] .hh .v.LH = r ;
- }
- }
- activewidth [ 1 ] = activewidth [ 1 ] + prevdp + mem [ q + 1 ] .cint ;
- prevdp = 0 ;
- lab45: if ( prevdp > d )
- {
- activewidth [ 1 ] = activewidth [ 1 ] + prevdp - d ;
- prevdp = d ;
- }
- prevp = p ;
- p = mem [ prevp ] .hh .v.RH ;
- }
- lab30: Result = bestplace ;
- return(Result) ;
- }
- halfword zvsplit ( n , h )
- eightbits n ;
- scaled h ;
- {/* 10 30 */ register halfword Result; vsplit_regmem
- halfword v ;
- halfword p ;
- halfword q ;
- v = eqtb [ 4322 + n ] .hh .v.RH ;
- if ( curmark [ 3 ] != 0 )
- {
- deletetokenref ( curmark [ 3 ] ) ;
- curmark [ 3 ] = 0 ;
- deletetokenref ( curmark [ 4 ] ) ;
- curmark [ 4 ] = 0 ;
- }
- if ( v == 0 )
- {
- Result = 0 ;
- return(Result) ;
- }
- if ( mem [ v ] .hh.b0 != 1 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 206 ) ;
- }
- printesc ( 813 ) ;
- print ( 814 ) ;
- printesc ( 815 ) ;
- {
- helpptr = 2 ;
- helpline [ 1 ] = 816 ;
- helpline [ 0 ] = 817 ;
- }
- error () ;
- Result = 0 ;
- return(Result) ;
- }
- q = vertbreak ( mem [ v + 5 ] .hh .v.RH , h , eqtb [ 5707 ] .cint ) ;
- p = mem [ v + 5 ] .hh .v.RH ;
- if ( p == q )
- mem [ v + 5 ] .hh .v.RH = 0 ;
- else while ( true ) {
-
- if ( mem [ p ] .hh.b0 == 4 )
- if ( curmark [ 3 ] == 0 )
- {
- curmark [ 3 ] = mem [ p + 1 ] .cint ;
- curmark [ 4 ] = curmark [ 3 ] ;
- mem [ curmark [ 3 ] ] .hh .v.LH = mem [ curmark [ 3 ] ] .hh .v.LH + 2 ;
- }
- else {
-
- deletetokenref ( curmark [ 4 ] ) ;
- curmark [ 4 ] = mem [ p + 1 ] .cint ;
- incr ( mem [ curmark [ 4 ] ] .hh .v.LH ) ;
- }
- if ( mem [ p ] .hh .v.RH == q )
- {
- mem [ p ] .hh .v.RH = 0 ;
- goto lab30 ;
- }
- p = mem [ p ] .hh .v.RH ;
- }
- lab30: ;
- q = prunepagetop ( q ) ;
- p = mem [ v + 5 ] .hh .v.RH ;
- freenode ( v , 7 ) ;
- if ( q == 0 )
- eqtb [ 4322 + n ] .hh .v.RH = 0 ;
- else eqtb [ 4322 + n ] .hh .v.RH = vpackage ( q , 0 , 1 , 1073741823L ) ;
- Result = vpackage ( p , h , 0 , eqtb [ 5707 ] .cint ) ;
- return(Result) ;
- }
- printtotals () {
- printtotals_regmem
- printscaled ( pagesofar [ 1 ] ) ;
- if ( pagesofar [ 2 ] != 0 )
- {
- print ( 181 ) ;
- printscaled ( pagesofar [ 2 ] ) ;
- print ( 206 ) ;
- }
- if ( pagesofar [ 3 ] != 0 )
- {
- print ( 181 ) ;
- printscaled ( pagesofar [ 3 ] ) ;
- print ( 180 ) ;
- }
- if ( pagesofar [ 4 ] != 0 )
- {
- print ( 181 ) ;
- printscaled ( pagesofar [ 4 ] ) ;
- print ( 826 ) ;
- }
- if ( pagesofar [ 5 ] != 0 )
- {
- print ( 181 ) ;
- printscaled ( pagesofar [ 5 ] ) ;
- print ( 827 ) ;
- }
- if ( pagesofar [ 6 ] != 0 )
- {
- print ( 182 ) ;
- printscaled ( pagesofar [ 6 ] ) ;
- }
- }
- zfreezepagespecs ( s )
- smallnumber s ;
- {freezepagespecs_regmem
- pagecontents = s ;
- pagesofar [ 0 ] = eqtb [ 5705 ] .cint ;
- pagemaxdepth = eqtb [ 5706 ] .cint ;
- pagesofar [ 7 ] = 0 ;
- pagesofar [ 1 ] = 0 ;
- pagesofar [ 2 ] = 0 ;
- pagesofar [ 3 ] = 0 ;
- pagesofar [ 4 ] = 0 ;
- pagesofar [ 5 ] = 0 ;
- pagesofar [ 6 ] = 0 ;
- leastpagecost = 1073741823L ;
- ;
- #ifdef STAT
- if ( eqtb [ 5300 ] .cint > 0 )
- {
- begindiagnostic () ;
- printnl ( 835 ) ;
- printscaled ( pagesofar [ 0 ] ) ;
- print ( 836 ) ;
- printscaled ( pagemaxdepth ) ;
- enddiagnostic ( false ) ;
- }
- #endif /* STAT */
- }
- zboxerror ( n )
- eightbits n ;
- {boxerror_regmem
- error () ;
- begindiagnostic () ;
- printnl ( 689 ) ;
- showbox ( eqtb [ 4322 + n ] .hh .v.RH ) ;
- enddiagnostic ( true ) ;
- flushnodelist ( eqtb [ 4322 + n ] .hh .v.RH ) ;
- eqtb [ 4322 + n ] .hh .v.RH = 0 ;
- }
- zensurevbox ( n )
- eightbits n ;
- {ensurevbox_regmem
- halfword p ;
- p = eqtb [ 4322 + n ] .hh .v.RH ;
- if ( p != 0 )
- if ( mem [ p ] .hh.b0 == 0 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 837 ) ;
- }
- {
- helpptr = 3 ;
- helpline [ 2 ] = 838 ;
- helpline [ 1 ] = 839 ;
- helpline [ 0 ] = 840 ;
- }
- boxerror ( n ) ;
- }
- }
- zfireup ( c )
- halfword c ;
- {/* 10 */ fireup_regmem
- halfword p, q, r, s ;
- halfword prevp ;
- unsigned char n ;
- boolean wait ;
- integer savevbadness ;
- scaled savevfuzz ;
- halfword savesplittopskip ;
- if ( mem [ bestpagebreak ] .hh.b0 == 12 )
- {
- geqworddefine ( 5306 , mem [ bestpagebreak + 1 ] .cint ) ;
- mem [ bestpagebreak + 1 ] .cint = 10000 ;
- }
- else geqworddefine ( 5306 , 10000 ) ;
- if ( curmark [ 2 ] != 0 )
- {
- if ( curmark [ 0 ] != 0 )
- deletetokenref ( curmark [ 0 ] ) ;
- curmark [ 0 ] = curmark [ 2 ] ;
- incr ( mem [ curmark [ 0 ] ] .hh .v.LH ) ;
- deletetokenref ( curmark [ 1 ] ) ;
- curmark [ 1 ] = 0 ;
- }
- if ( c == bestpagebreak )
- bestpagebreak = 0 ;
- if ( eqtb [ 4577 ] .hh .v.RH != 0 )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 206 ) ;
- }
- printesc ( 274 ) ;
- print ( 851 ) ;
- {
- helpptr = 2 ;
- helpline [ 1 ] = 852 ;
- helpline [ 0 ] = 840 ;
- }
- boxerror ( 255 ) ;
- }
- insertpenalties = 0 ;
- savesplittopskip = eqtb [ 3536 ] .hh .v.RH ;
- r = mem [ memtop ] .hh .v.RH ;
- while ( r != memtop ) {
-
- if ( mem [ r + 2 ] .hh .v.LH != 0 )
- {
- n = mem [ r ] .hh.b1 ;
- ensurevbox ( n ) ;
- if ( eqtb [ 4322 + n ] .hh .v.RH == 0 )
- eqtb [ 4322 + n ] .hh .v.RH = newnullbox () ;
- p = eqtb [ 4322 + n ] .hh .v.RH + 5 ;
- while ( mem [ p ] .hh .v.RH != 0 ) p = mem [ p ] .hh .v.RH ;
- mem [ r + 2 ] .hh .v.RH = p ;
- }
- r = mem [ r ] .hh .v.RH ;
- }
- q = memtop - 4 ;
- mem [ q ] .hh .v.RH = 0 ;
- prevp = memtop - 2 ;
- p = mem [ prevp ] .hh .v.RH ;
- while ( p != bestpagebreak ) {
-
- if ( mem [ p ] .hh.b0 == 3 )
- {
- r = mem [ memtop ] .hh .v.RH ;
- while ( mem [ r ] .hh.b1 != mem [ p ] .hh.b1 ) r = mem [ r ] .hh .v.RH ;
- if ( mem [ r + 2 ] .hh .v.LH == 0 )
- wait = true ;
- else {
-
- wait = false ;
- s = mem [ p + 4 ] .hh .v.LH ;
- mem [ mem [ r + 2 ] .hh .v.RH ] .hh .v.RH = s ;
- s = mem [ r + 2 ] .hh .v.RH ;
- if ( mem [ r + 2 ] .hh .v.LH == p )
- {
- if ( mem [ r ] .hh.b0 == 1 )
- if ( ( mem [ r + 1 ] .hh .v.LH == p ) && ( mem [ r + 1 ] .hh .v.RH
- != 0 ) )
- {
- while ( mem [ s ] .hh .v.RH != mem [ r + 1 ] .hh .v.RH ) s = mem [
- s ] .hh .v.RH ;
- eqtb [ 3536 ] .hh .v.RH = mem [ p + 4 ] .hh .v.RH ;
- mem [ p + 4 ] .hh .v.LH = prunepagetop ( mem [ r + 1 ] .hh .v.RH )
- ;
- if ( mem [ p + 4 ] .hh .v.LH != 0 )
- {
- tempptr = vpackage ( mem [ p + 4 ] .hh .v.LH , 0 , 1 ,
- 1073741823L ) ;
- mem [ p + 3 ] .cint = mem [ tempptr + 3 ] .cint + mem [ tempptr
- + 2 ] .cint ;
- freenode ( tempptr , 7 ) ;
- wait = true ;
- }
- mem [ s ] .hh .v.RH = 0 ;
- }
- mem [ r + 2 ] .hh .v.LH = 0 ;
- n = mem [ r ] .hh.b1 ;
- tempptr = mem [ eqtb [ 4322 + n ] .hh .v.RH + 5 ] .hh .v.RH ;
- freenode ( eqtb [ 4322 + n ] .hh .v.RH , 7 ) ;
- eqtb [ 4322 + n ] .hh .v.RH = vpackage ( tempptr , 0 , 1 ,
- 1073741823L ) ;
- }
- else {
-
- while ( mem [ s ] .hh .v.RH != 0 ) s = mem [ s ] .hh .v.RH ;
- mem [ r + 2 ] .hh .v.RH = s ;
- }
- }
- mem [ prevp ] .hh .v.RH = mem [ p ] .hh .v.RH ;
- mem [ p ] .hh .v.RH = 0 ;
- if ( wait )
- {
- mem [ q ] .hh .v.RH = p ;
- q = p ;
- incr ( insertpenalties ) ;
- }
- else {
-
- deleteglueref ( mem [ p + 4 ] .hh .v.RH ) ;
- freenode ( p , 5 ) ;
- }
- p = prevp ;
- }
- else if ( mem [ p ] .hh.b0 == 4 )
- {
- if ( curmark [ 1 ] == 0 )
- {
- curmark [ 1 ] = mem [ p + 1 ] .cint ;
- incr ( mem [ curmark [ 1 ] ] .hh .v.LH ) ;
- }
- if ( curmark [ 2 ] != 0 )
- deletetokenref ( curmark [ 2 ] ) ;
- curmark [ 2 ] = mem [ p + 1 ] .cint ;
- incr ( mem [ curmark [ 2 ] ] .hh .v.LH ) ;
- }
- prevp = p ;
- p = mem [ prevp ] .hh .v.RH ;
- }
- eqtb [ 3536 ] .hh .v.RH = savesplittopskip ;
- if ( p != 0 )
- {
- if ( mem [ memtop - 1 ] .hh .v.RH == 0 )
- if ( nestptr == 0 )
- curlist .tailfield = pagetail ;
- else nest [ 0 ] .tailfield = pagetail ;
- mem [ pagetail ] .hh .v.RH = mem [ memtop - 1 ] .hh .v.RH ;
- mem [ memtop - 1 ] .hh .v.RH = p ;
- mem [ prevp ] .hh .v.RH = 0 ;
- }
- savevbadness = eqtb [ 5294 ] .cint ;
- eqtb [ 5294 ] .cint = 10000 ;
- savevfuzz = eqtb [ 5710 ] .cint ;
- eqtb [ 5710 ] .cint = 1073741823L ;
- eqtb [ 4577 ] .hh .v.RH = vpackage ( mem [ memtop - 2 ] .hh .v.RH , bestsize
- , 0 , pagemaxdepth ) ;
- eqtb [ 5294 ] .cint = savevbadness ;
- eqtb [ 5710 ] .cint = savevfuzz ;
- if ( lastglue != 65535L )
- deleteglueref ( lastglue ) ;
- pagecontents = 0 ;
- pagetail = memtop - 2 ;
- mem [ memtop - 2 ] .hh .v.RH = 0 ;
- lastglue = 65535L ;
- lastpenalty = 0 ;
- lastkern = 0 ;
- pagesofar [ 7 ] = 0 ;
- pagemaxdepth = 0 ;
- if ( q != memtop - 4 )
- {
- mem [ memtop - 2 ] .hh .v.RH = mem [ memtop - 4 ] .hh .v.RH ;
- pagetail = q ;
- }
- r = mem [ memtop ] .hh .v.RH ;
- while ( r != memtop ) {
-
- q = mem [ r ] .hh .v.RH ;
- freenode ( r , 4 ) ;
- r = q ;
- }
- mem [ memtop ] .hh .v.RH = memtop ;
- if ( ( curmark [ 0 ] != 0 ) && ( curmark [ 1 ] == 0 ) )
- {
- curmark [ 1 ] = curmark [ 0 ] ;
- incr ( mem [ curmark [ 0 ] ] .hh .v.LH ) ;
- }
- if ( eqtb [ 4057 ] .hh .v.RH != 0 )
- if ( deadcycles >= eqtb [ 5307 ] .cint )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 853 ) ;
- }
- printint ( deadcycles ) ;
- print ( 854 ) ;
- {
- helpptr = 3 ;
- helpline [ 2 ] = 855 ;
- helpline [ 1 ] = 856 ;
- helpline [ 0 ] = 857 ;
- }
- error () ;
- }
- else {
-
- outputactive = true ;
- incr ( deadcycles ) ;
- pushnest () ;
- curlist .modefield = -1 ;
- curlist .auxfield = -65536000L ;
- curlist .mlfield = - (integer) line ;
- begintokenlist ( eqtb [ 4057 ] .hh .v.RH , 6 ) ;
- newsavelevel ( 8 ) ;
- normalparagraph () ;
- scanleftbrace () ;
- return ;
- }
- {
- if ( mem [ memtop - 2 ] .hh .v.RH != 0 )
- {
- if ( mem [ memtop - 1 ] .hh .v.RH == 0 )
- if ( nestptr == 0 )
- curlist .tailfield = pagetail ;
- else nest [ 0 ] .tailfield = pagetail ;
- else mem [ pagetail ] .hh .v.RH = mem [ memtop - 1 ] .hh .v.RH ;
- mem [ memtop - 1 ] .hh .v.RH = mem [ memtop - 2 ] .hh .v.RH ;
- mem [ memtop - 2 ] .hh .v.RH = 0 ;
- pagetail = memtop - 2 ;
- }
- shipout ( eqtb [ 4577 ] .hh .v.RH ) ;
- eqtb [ 4577 ] .hh .v.RH = 0 ;
- }
- }
- buildpage () {
- /* 10 30 31 22 80 90 */ buildpage_regmem
- halfword p ;
- halfword q, r ;
- integer b, c ;
- integer pi ;
- unsigned char n ;
- scaled delta, h, w ;
- if ( ( mem [ memtop - 1 ] .hh .v.RH == 0 ) || outputactive )
- return ;
- do {
- lab22: p = mem [ memtop - 1 ] .hh .v.RH ;
- if ( lastglue != 65535L )
- deleteglueref ( lastglue ) ;
- lastpenalty = 0 ;
- lastkern = 0 ;
- if ( mem [ p ] .hh.b0 == 10 )
- {
- lastglue = mem [ p + 1 ] .hh .v.LH ;
- incr ( mem [ lastglue ] .hh .v.RH ) ;
- }
- else {
-
- lastglue = 65535L ;
- if ( mem [ p ] .hh.b0 == 12 )
- lastpenalty = mem [ p + 1 ] .cint ;
- else if ( mem [ p ] .hh.b0 == 11 )
- lastkern = mem [ p + 1 ] .cint ;
- }
- switch ( mem [ p ] .hh.b0 )
- {case 0 :
- case 1 :
- case 2 :
- if ( pagecontents < 2 )
- {
- if ( pagecontents == 0 )
- freezepagespecs ( 2 ) ;
- else pagecontents = 2 ;
- q = newskipparam ( 9 ) ;
- mem [ q ] .hh .v.RH = p ;
- if ( mem [ tempptr + 1 ] .cint > mem [ p + 3 ] .cint )
- mem [ tempptr + 1 ] .cint = mem [ tempptr + 1 ] .cint - mem [ p + 3 ]
- .cint ;
- else mem [ tempptr + 1 ] .cint = 0 ;
- mem [ q ] .hh .v.RH = p ;
- mem [ memtop - 1 ] .hh .v.RH = q ;
- goto lab22 ;
- }
- else {
-
- pagesofar [ 1 ] = pagesofar [ 1 ] + pagesofar [ 7 ] + mem [ p + 3 ]
- .cint ;
- pagesofar [ 7 ] = mem [ p + 2 ] .cint ;
- goto lab80 ;
- }
- break ;
- case 8 :
- goto lab80 ;
- break ;
- case 10 :
- if ( pagecontents < 2 )
- goto lab31 ;
- else if ( ( mem [ pagetail ] .hh.b0 < 9 ) )
- pi = 0 ;
- else goto lab90 ;
- break ;
- case 11 :
- if ( pagecontents < 2 )
- goto lab31 ;
- else if ( mem [ p ] .hh .v.RH == 0 )
- return ;
- else if ( mem [ mem [ p ] .hh .v.RH ] .hh.b0 == 10 )
- pi = 0 ;
- else goto lab90 ;
- break ;
- case 12 :
- if ( pagecontents < 2 )
- goto lab31 ;
- else pi = mem [ p + 1 ] .cint ;
- break ;
- case 4 :
- goto lab80 ;
- break ;
- case 3 :
- {
- if ( pagecontents == 0 )
- freezepagespecs ( 1 ) ;
- n = mem [ p ] .hh.b1 ;
- r = memtop ;
- while ( n >= mem [ mem [ r ] .hh .v.RH ] .hh.b1 ) r = mem [ r ] .hh
- .v.RH ;
- n = n ;
- if ( mem [ r ] .hh.b1 != n )
- {
- q = getnode ( 4 ) ;
- mem [ q ] .hh .v.RH = mem [ r ] .hh .v.RH ;
- mem [ r ] .hh .v.RH = q ;
- r = q ;
- mem [ r ] .hh.b1 = n ;
- mem [ r ] .hh.b0 = 0 ;
- ensurevbox ( n ) ;
- if ( eqtb [ 4322 + n ] .hh .v.RH == 0 )
- mem [ r + 3 ] .cint = 0 ;
- else mem [ r + 3 ] .cint = mem [ eqtb [ 4322 + n ] .hh .v.RH + 3 ]
- .cint + mem [ eqtb [ 4322 + n ] .hh .v.RH + 2 ] .cint ;
- mem [ r + 2 ] .hh .v.LH = 0 ;
- q = eqtb [ 3544 + n ] .hh .v.RH ;
- if ( eqtb [ 5317 + n ] .cint == 1000 )
- h = mem [ r + 3 ] .cint ;
- else h = xovern ( mem [ r + 3 ] .cint , 1000 ) * eqtb [ 5317 + n ]
- .cint ;
- pagesofar [ 0 ] = pagesofar [ 0 ] - h - mem [ q + 1 ] .cint ;
- pagesofar [ 2 + mem [ q ] .hh.b0 ] = pagesofar [ 2 + mem [ q ]
- .hh.b0 ] + mem [ q + 2 ] .cint ;
- pagesofar [ 6 ] = pagesofar [ 6 ] + mem [ q + 3 ] .cint ;
- if ( ( mem [ q ] .hh.b1 != 0 ) && ( mem [ q + 3 ] .cint != 0 ) )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 846 ) ;
- }
- printesc ( 260 ) ;
- printint ( n ) ;
- {
- helpptr = 3 ;
- helpline [ 2 ] = 847 ;
- helpline [ 1 ] = 848 ;
- helpline [ 0 ] = 776 ;
- }
- error () ;
- }
- }
- if ( mem [ r ] .hh.b0 == 1 )
- insertpenalties = insertpenalties + mem [ p + 1 ] .cint ;
- else {
-
- mem [ r + 2 ] .hh .v.RH = p ;
- delta = pagesofar [ 0 ] - pagesofar [ 1 ] - pagesofar [ 7 ] +
- pagesofar [ 6 ] ;
- if ( eqtb [ 5317 + n ] .cint == 1000 )
- h = mem [ p + 3 ] .cint ;
- else h = xovern ( mem [ p + 3 ] .cint , 1000 ) * eqtb [ 5317 + n ]
- .cint ;
- if ( ( ( h <= 0 ) || ( h <= delta ) ) && ( mem [ p + 3 ] .cint + mem
- [ r + 3 ] .cint <= eqtb [ 5721 + n ] .cint ) )
- {
- pagesofar [ 0 ] = pagesofar [ 0 ] - h ;
- mem [ r + 3 ] .cint = mem [ r + 3 ] .cint + mem [ p + 3 ] .cint ;
- }
- else {
-
- if ( eqtb [ 5317 + n ] .cint <= 0 )
- w = 1073741823L ;
- else {
-
- w = pagesofar [ 0 ] - pagesofar [ 1 ] - pagesofar [ 7 ] ;
- if ( eqtb [ 5317 + n ] .cint != 1000 )
- w = xovern ( w , eqtb [ 5317 + n ] .cint ) * 1000 ;
- }
- if ( w > eqtb [ 5721 + n ] .cint - mem [ r + 3 ] .cint )
- w = eqtb [ 5721 + n ] .cint - mem [ r + 3 ] .cint ;
- q = vertbreak ( mem [ p + 4 ] .hh .v.LH , w , mem [ p + 2 ] .cint
- ) ;
- mem [ r + 3 ] .cint = mem [ r + 3 ] .cint + bestheightplusdepth ;
- ;
- #ifdef STAT
- if ( eqtb [ 5300 ] .cint > 0 )
- {
- begindiagnostic () ;
- printnl ( 849 ) ;
- printint ( n ) ;
- print ( 850 ) ;
- printscaled ( w ) ;
- printchar ( 44 ) ;
- printscaled ( bestheightplusdepth ) ;
- print ( 785 ) ;
- if ( q == 0 )
- printint ( -10000 ) ;
- else if ( mem [ q ] .hh.b0 == 12 )
- printint ( mem [ q + 1 ] .cint ) ;
- else printchar ( 48 ) ;
- enddiagnostic ( false ) ;
- }
- #endif /* STAT */
- if ( eqtb [ 5317 + n ] .cint != 1000 )
- bestheightplusdepth = xovern ( bestheightplusdepth , 1000 ) * eqtb
- [ 5317 + n ] .cint ;
- pagesofar [ 0 ] = pagesofar [ 0 ] - bestheightplusdepth ;
- mem [ r ] .hh.b0 = 1 ;
- mem [ r + 1 ] .hh .v.RH = q ;
- mem [ r + 1 ] .hh .v.LH = p ;
- if ( q == 0 )
- insertpenalties = insertpenalties - 10000 ;
- else if ( mem [ q ] .hh.b0 == 12 )
- insertpenalties = insertpenalties + mem [ q + 1 ] .cint ;
- }
- }
- goto lab80 ;
- }
- break ;
- default:
- confusion ( 841 ) ;
- break ;
- }
- if ( pi < 10000 )
- {
- if ( pagesofar [ 1 ] < pagesofar [ 0 ] )
- if ( ( pagesofar [ 3 ] != 0 ) || ( pagesofar [ 4 ] != 0 ) || ( pagesofar
- [ 5 ] != 0 ) )
- b = 0 ;
- else b = badness ( pagesofar [ 0 ] - pagesofar [ 1 ] , pagesofar [ 2 ] )
- ;
- else if ( pagesofar [ 1 ] - pagesofar [ 0 ] > pagesofar [ 6 ] )
- b = 1073741823L ;
- else b = badness ( pagesofar [ 1 ] - pagesofar [ 0 ] , pagesofar [ 6 ] )
- ;
- if ( b < 1073741823L )
- if ( pi <= -10000 )
- c = pi ;
- else if ( b < 10000 )
- c = b + pi + insertpenalties ;
- else c = 100000L ;
- else c = b ;
- if ( insertpenalties >= 10000 )
- c = 1073741823L ;
- ;
- #ifdef STAT
- if ( eqtb [ 5300 ] .cint > 0 )
- {
- begindiagnostic () ;
- printnl ( 37 ) ;
- print ( 781 ) ;
- printtotals () ;
- print ( 844 ) ;
- printscaled ( pagesofar [ 0 ] ) ;
- print ( 784 ) ;
- if ( b == 1073741823L )
- printchar ( 42 ) ;
- else printint ( b ) ;
- print ( 785 ) ;
- printint ( pi ) ;
- print ( 845 ) ;
- if ( c == 1073741823L )
- printchar ( 42 ) ;
- else printint ( c ) ;
- if ( c <= leastpagecost )
- printchar ( 35 ) ;
- enddiagnostic ( false ) ;
- }
- #endif /* STAT */
- if ( c <= leastpagecost )
- {
- bestpagebreak = p ;
- bestsize = pagesofar [ 0 ] ;
- leastpagecost = c ;
- r = mem [ memtop ] .hh .v.RH ;
- while ( r != memtop ) {
-
- mem [ r + 2 ] .hh .v.LH = mem [ r + 2 ] .hh .v.RH ;
- r = mem [ r ] .hh .v.RH ;
- }
- }
- if ( ( c == 1073741823L ) || ( pi <= -10000 ) )
- {
- fireup ( p ) ;
- if ( outputactive )
- return ;
- goto lab30 ;
- }
- }
- if ( ( mem [ p ] .hh.b0 < 10 ) || ( mem [ p ] .hh.b0 > 11 ) )
- goto lab80 ;
- lab90: if ( mem [ p ] .hh.b0 == 11 )
- q = p ;
- else {
-
- q = mem [ p + 1 ] .hh .v.LH ;
- pagesofar [ 2 + mem [ q ] .hh.b0 ] = pagesofar [ 2 + mem [ q ] .hh.b0 ]
- + mem [ q + 2 ] .cint ;
- pagesofar [ 6 ] = pagesofar [ 6 ] + mem [ q + 3 ] .cint ;
- if ( ( mem [ q ] .hh.b1 != 0 ) && ( mem [ q + 3 ] .cint != 0 ) )
- {
- {
- if ( interaction == 3 )
- wakeupterminal () ;
- printnl ( 133 ) ;
- print ( 842 ) ;
- }
- {
- helpptr = 4 ;
- helpline [ 3 ] = 843 ;
- helpline [ 2 ] = 811 ;
- helpline [ 1 ] = 812 ;
- helpline [ 0 ] = 776 ;
- }
- error () ;
- r = newspec ( q ) ;
- mem [ r ] .hh.b1 = 0 ;
- deleteglueref ( q ) ;
- mem [ p + 1 ] .hh .v.LH = r ;
- }
- }
- pagesofar [ 1 ] = pagesofar [ 1 ] + pagesofar [ 7 ] + mem [ q + 1 ] .cint
- ;
- pagesofar [ 7 ] = 0 ;
- lab80: if ( pagesofar [ 7 ] > pagemaxdepth )
- {
- pagesofar [ 1 ] = pagesofar [ 1 ] + pagesofar [ 7 ] - pagemaxdepth ;
- pagesofar [ 7 ] = pagemaxdepth ;
- }
- mem [ pagetail ] .hh .v.RH = p ;
- pagetail = p ;
- mem [ memtop - 1 ] .hh .v.RH = mem [ p ] .hh .v.RH ;
- mem [ p ] .hh .v.RH = 0 ;
- goto lab30 ;
- lab31: mem [ memtop - 1 ] .hh .v.RH = mem [ p ] .hh .v.RH ;
- mem [ p ] .hh .v.RH = 0 ;
- flushnodelist ( p ) ;
- lab30: ;
- } while ( ! ( mem [ memtop - 1 ] .hh .v.RH == 0 ) ) ;
- if ( nestptr == 0 )
- curlist .tailfield = memtop - 1 ;
- else nest [ 0 ] .tailfield = memtop - 1 ;
- }
- appspace () {
- appspace_regmem
- halfword p ;
- halfword q ;
- internalfontnumber f ;
- integer k ;
- if ( ( curlist .auxfield >= 2000 ) && ( eqtb [ 3539 ] .hh .v.RH != 0 ) )
- q = newparamglue ( 13 ) ;
- else {
-
- if ( eqtb [ 3538 ] .hh .v.RH != 0 )
- p = eqtb [ 3538 ] .hh .v.RH ;
- else {
-
- p = fontglue [ eqtb [ 4578 ] .hh .v.RH ] ;
- if ( p == 0 )
- {
- f = eqtb [ 4578 ] .hh .v.RH ;
- p = newspec ( 0 ) ;
- k = parambase [ f ] + 2 ;
- mem [ p + 1 ] .cint = fontinfo [ k ] .cint ;
- mem [ p + 2 ] .cint = fontinfo [ k + 1 ] .cint ;
- mem [ p + 3 ] .cint = fontinfo [ k + 2 ] .cint ;
- fontglue [ f ] = p ;
- }
- }
- p = newspec ( p ) ;
- if ( curlist .auxfield >= 2000 )
- mem [ p + 1 ] .cint = mem [ p + 1 ] .cint + fontinfo [ 7 + parambase [
- eqtb [ 4578 ] .hh .v.RH ] ] .cint ;
- mem [ p + 2 ] .cint = xnoverd ( mem [ p + 2 ] .cint , curlist .auxfield ,
- 1000 ) ;
- mem [ p + 3 ] .cint = xnoverd ( mem [ p + 3 ] .cint , 1000 , curlist
- .auxfield ) ;
- q = newglue ( p ) ;
- mem [ p ] .hh .v.RH = 0 ;
- }
- mem [ curlist .tailfield ] .hh .v.RH = q ;
- curlist .tailfield = q ;
- }
-